home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 Summer - Disc 1 / WN_Ete2010_CD1.iso / Onglet5 / Weezo / Weezo setup.exe / {code_appDir} / www / widgets / monitor.php
PHP Script  |  2010-05-19  |  4KB  |  91 lines

  1. <?php
  2. /**
  3.  * UWA Monitoring Widget server-side script
  4.  *
  5.  * PHP version 5
  6.  *
  7.  * LICENSE: This source file is subject to version 3.0 of the PHP license
  8.  * that is available through the world-wide-web at the following URI:
  9.  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  10.  * the PHP License and are unable to obtain it through the web, please
  11.  * send a note to license@php.net so we can mail you a copy immediately.
  12.  *
  13.  * @category   NA
  14.  * @package    NA
  15.  * @author     Nicolas Bruley / Peer 2 World <contact@weezo.net>
  16.  * @copyright  2005-2009 Nicolas Bruley / Peer 2 World
  17.  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
  18.  * @version    CVS: $Id:$
  19.  * @link       http://www.weezo.net
  20.  * @since      File available since Release 1.0.8
  21.  */
  22.  
  23. /**
  24.  * @desc return an array containing session data
  25.  *
  26.  * @param string $sessionFileName : session's filename
  27.  * @return array : session data
  28.  */
  29. function unserializeSession($sessionData){
  30.     $sess=array();
  31.     $data = preg_split('/([A-Za-z_][A-Za-z0-9_]*)\|/',$sessionData,-1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
  32.     for ($i=0;$i<count($data)/2;$i++) $sess[$data[$i*2]]=@unserialize($data[$i*2+1]);
  33.     return $sess;
  34. }
  35.  
  36. // XML response header
  37. cfAsyncHeader();
  38.  
  39. // Set language
  40. if(isset($_GET['lng']) && cfMIssetVar('weezoLng'.substr($_GET['lng'],0,2))) cfGSetVar('language',substr($_GET['lng'],0,2));
  41.  
  42. // Incorrect monitorWidgetAccessCode
  43. if(!cfGGetVar('monitorWidgetAccessCode') || ((!isset($_POST['monitorWidgetAccessCode']) || $_POST['monitorWidgetAccessCode']!=cfGGetVar('monitorWidgetAccessCode')) && (!isset($_GET['monitorWidgetAccessCode']) || $_GET['monitorWidgetAccessCode']!=cfGGetVar('monitorWidgetAccessCode')))) {
  44.     sleep(3);
  45.     echo cfAsyncXMLJSaction('setServerState("");setMessage("'.cfCaption('loginBadPassword').$_GET['monitorWidgetAccessCode'].'")');
  46.     //echo cfAsyncXMLJSaction('setServerState("");setMessage("'.cfCaption('loginBadPassword').'")');
  47.     die(cfAsyncFooter());
  48. }
  49.  
  50. // Set server as started on web
  51. echo cfAsyncXMLJSaction('setServerState("'.cfCaption('apacheStartedWeb').'")');
  52.  
  53. // Get connected users list
  54. $sessions=glob(cfAppDataDir().'/sessiondata/sess_*');
  55. $connected=array();
  56. $nb=0;
  57.  
  58. // Browse sessions
  59. foreach ($sessions as $completeFilename){
  60.     // Get session data
  61.     $file=basename($completeFilename);
  62.     if(cfGGetVar('sessionHandler')=='memory') $sess=unserializeSession(@cfMGetVar('weezoS'.substr($file,1),true));
  63.     else $sess=unserializeSession(file_get_contents($completeFilename));
  64.  
  65.     // If session corresponds to a connected user, add it to $connected list
  66.     if(isset($sess['user']['name']) && !@$sess['user']['invisible']){
  67.         if(!isset($connected[$sess['user']['name']])) $connected[$sess['user']['name']]=array('nb'=>1, 'icon'=>'gfx/icons/'.$sess['user']['icon']);
  68.         else $connected[$sess['user']['name']]['nb']++;
  69.         $nb++;
  70.     }
  71. //    cfVarDump($sess['user']);
  72.     unset($sess);
  73. }
  74.  
  75. // Number of connected users
  76. echo cfAsyncXMLJSaction('setConnectedNb("'.cfCaption('mainNumberConnectedUsers',(int)$nb).'")');
  77.  
  78. // List of connected users, with (group)name, icon, and nb of connected users per group
  79. $list='';
  80. if($nb){
  81.     foreach ($connected as $name=>$value){
  82.         $list.=',Array("'.str_replace(',',';',cfUTF8Encode($name)).'",'.$value['nb'].',"'.$value['icon'].'")';
  83.     }
  84. }
  85. else $list=',';
  86. echo cfAsyncXMLJSaction('setConnected(Array('.substr($list,1).'))');
  87.  
  88. // Next information request
  89. echo cfAsyncXMLJSaction('setNextRefresh('.max(1,(int)cfGGetVar('monitorWidgetRefreshInterval')).')');
  90. die(cfAsyncFooter());
  91. ?>